"""
计算部门的人效比
人效比=有效工时（扣除请假）/填日报人数/月标准工时
1,2,3月人效比分别为1.04、0.97和1.04
"""

import pandas as pd 

# 1.读取部门所属项目的所有日报数据
path = 'C:/Users/pc/Downloads/timelog.csv'
df = pd.read_csv(path)

df['月份'] = df['日期'].apply(lambda x: x[:4] + x[5:7])

# 2.将非本部门人员的日报数据删除

"""
先计算部门每月的总的工作负荷数
1.按月份进行汇总
2.按月份统计填日报人数
3.计算每个人的工作负荷数
"""

df_month = df.groupby('月份')['小时'].sum()
df_month = df_month.reset_index()

# 按月份计算每月填写日报的去重人数
df_person = df.groupby('月份')['用户'].nunique()
df_person = df_person.reset_index()

# 将df_month和df_person按“月份”合并
df_merge = pd.merge(df_month,df_person,on='月份')

# 读取法定工作日表
df_workday = pd.read_excel('Files/workLoad/2024年法定工作日.xlsx')

# 将df_merge和df_workday 左连接合并
df_merge['月份'] = df_merge['月份'].astype(str)
df_workday['月份'] = df_workday['月份'].astype(str)
df_merge = pd.merge(df_merge,df_workday,on='月份',how='left')

df_merge['负荷度'] = df_merge['小时'] / (df_merge['用户'] * df_merge['法定工作日'] * 7.67)

print(df_merge)

